#pragma once

#ifndef TRACE_MESSAGE_H_
#define TRACE_MESSAGE_H_

#include "Lock.h"
#include "Agent.h"
#include "GUIBase.h"
#include <vector>
#include <string>
#include <ctime>

class Lock;
struct MessageLogEntry;

class TraceManager
{
public:
	~TraceManager();

	static TraceManager* SharedManager();

	void addMessage(std::string message, time_t, Agent* sender);

	static TraceManager *traceManager;

	std::vector<MessageLogEntry*> *traceLog;

	std::vector<std::string> *displayableMessageSenders;


	Lock messageVectorLock;

private:
	TraceManager();

	time_t startTime;
};

#endif